package com.itcast.activiti.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.itcast.activiti.domain.AllowUserObj;
import com.itcast.activiti.domain.ApproveNode;
import com.itcast.activiti.domain.UserInfo;
import com.itcast.activiti.entity.ApproveDefinition;

import java.util.List;

public interface ApproveJsonService {

    // 解析 谁可以发起这个审批 字段，字符串转列表
    String allowUserJsonStrToList(List<AllowUserObj> allowUserJsonStr);

    // 解析 流程json 格式，并给其中的节点生成nodeKey
    String parseFlowJson(JSONArray flowData);

    // 解析 流程json 获取 节点列表
    List<ApproveNode> getApproveNodesFromJson(ApproveDefinition approveDefinition, String startUserId, boolean isSatisfy);

    // 解析 流程json 中的某一个节点，获取这个节点的应处理人
    List<UserInfo> getNodeOughtUsers(JSONObject curr, String startUserId);
}
